In [18]:
    
fileName='book.txt'
    
Ahora vamos a eliminar todo aquello que no se consideren cadenas de texto válidas. Para ello definiremos una función que elimine aquello que no queremos contabilizar.
In [19]:
    
import re
def removePunctuation(text):
    return re.sub('[^a-z| |0-9]', '', text.strip().lower())
    
Ahora vamos a crear el primer RDD del contenido del libro.
In [21]:
    
shakespeareRDD = (sc
                  .textFile(fileName, 8)
                  .map(removePunctuation))
    
In [22]:
    
shakespeareRDD.take(4)
    
    Out[22]:
In [23]:
    
print '\n'.join(shakespeareRDD
                .zipWithIndex()  # to (line, lineNum)
                .map(lambda (l, num): '{0}: {1}'.format(num, l))  # to 'lineNum: line'
                .take(15))
    
    
In [25]:
    
shakespeareWordRDD=shakespeareRDD.flatMap(lambda x: x.split(' '))
    
In [26]:
    
shakespeareWordCount=shakespeareWordRDD.count()
    
In [27]:
    
print shakespeareWordCount
    
    
In [28]:
    
print shakespeareWordRDD.take(10)
    
    
A continuación vamos a detectar cual es la palabra que más veces aparece en el texto. Generaremos un ranking de las 10 más numerosas para que se vea parte del poder de spark.
In [32]:
    
ranking= shakespeareWordRDD.map(lambda x: (x,1)).reduceByKey(lambda y,z: y+z).takeOrdered(10,lambda x : -x[1])
    
In [34]:
    
print ranking